package com.dhecp.project.finance.service;

import java.util.List;
import java.util.Map;

import com.dhecp.common.core.domain.AjaxResult;
import com.dhecp.project.common.service.BaseModuleService;
import com.dhecp.project.finance.domain.CompanyCreditExtension;

/**
 * 公司授信 服务层接口
 * @author DH-Xxj
 * @version 2022年10月9日
 */
public interface CompanyCreditExtensionService extends BaseModuleService{

	/**
	 * 查询前一单NID、BID
	 * @param nid 必要参数：当前 单据编码
	 * @return AjaxResult (data.nid 前一单NID， data.bid 前一单BID)
	 * @author DH-Xxj
	 * @throws Exception  
	 */
	AjaxResult queryLastNid(Map<String, Object> params) throws Exception;
	
	/**
	 * 查询后一单NID、BID
	 * @param nid 必要参数：当前 单据编码
	 * @return AjaxResult (data.nid 后一单NID， data.bid 后一单BID)
	 * @author DH-Xxj
	 * @throws Exception  
	 */
	AjaxResult queryNextNid(Map<String, Object> params) throws Exception;
	
	/**
	 * 查询指定单nid的首记录
	 * @param nid 必要参数：当前 单据编码
	 * @return CompanyCreditExtension
	 * @throws Exception
	 * @author DH-Xxj
	 */
	CompanyCreditExtension queryFirstRecord(Map<String, Object> params) throws Exception;
	
	/**
	 * 查询指定单nid的整单录
	 * @param nid 必要参数：当前 单据编码
	 * @return List - CompanyCreditExtension
	 * @throws Exception
	 * @author DH-Xxj
	 */
	List<CompanyCreditExtension> queryListByNid(Map<String, Object> params) throws Exception;
	
	/**
	 * 查询
	 * @param params
	 * @return List - CompanyCreditExtension
	 * @throws Exception
	 * @author DH-Xxj
	 */
	List<CompanyCreditExtension> queryList(Map<String, Object> params) throws Exception;
	
	/**
	 * 分组（整单）查询
	 * @param params
	 * @return List - CompanyCreditExtension
	 * @throws Exception
	 * @author DH-Xxj
	 */
	List<CompanyCreditExtension> queryGroupList(Map<String, Object> params) throws Exception;
	
	/**
	 * 保存
	 * @param moduleTable 必要参数：功能唯一标识
	 * @param infoMap 必要参数：非网格字段（包括头部、底部所有显示和隐藏的字段）
	 * @param infoItems 必要参数：对应实体类的json格式字符串
	 * @return AjaxResult
	 * @author DH-Xxj
	 */
	AjaxResult saveData(Map<String, Object> params);
	
	/**
	 * 删除
	 * @param infoItems 必要参数：对应实体类的json格式字符串
	 * @return AjaxResult
	 * @author DH-Xxj
	 */
	AjaxResult deleteData(Map<String, Object> params);
	
	/**
	 * 修改删除标志（预留）
	 * @param infoItems 必要参数：对应实体类的json格式字符串（仅需 guid 和 deleted）
	 * @return AjaxResult
	 * @author DH-Xxj
	 */
	AjaxResult updateDeleted(Map<String, Object> params);
	
	/**
	 * 流转  —— 添加流程任务、修改流程状态及生效标志
	 * @param tableDataId 必要参数：单据编码（nid）
	 * @return AjaxResult
	 * @author DH-Xxj
	 */
	AjaxResult updateFlowGo(Map<String, Object> params);
	
	/**
	 * 退回  —— 添加流程任务、修改流程状态及生效标志
	 * @param tableDataId 必要参数：单据编码（nid）
	 * @return AjaxResult
	 * @author DH-Xxj
	 */
	AjaxResult updateFlowBack(Map<String, Object> params);
	
}
